home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / lib2to3 / fixes / fix_intern.py < prev    next >
Encoding:
Python Source  |  2009-04-18  |  1.3 KB  |  45 lines

  1. # Copyright 2006 Georg Brandl.
  2. # Licensed to PSF under a Contributor Agreement.
  3.  
  4. """Fixer for intern().
  5.  
  6. intern(s) -> sys.intern(s)"""
  7.  
  8. # Local imports
  9. from .. import pytree
  10. from .. import fixer_base
  11. from ..fixer_util import Name, Attr, touch_import
  12.  
  13.  
  14. class FixIntern(fixer_base.BaseFix):
  15.  
  16.     PATTERN = """
  17.     power< 'intern'
  18.            trailer< lpar='('
  19.                     ( not(arglist | argument<any '=' any>) obj=any
  20.                       | obj=arglist<(not argument<any '=' any>) any ','> )
  21.                     rpar=')' >
  22.            after=any*
  23.     >
  24.     """
  25.  
  26.     def transform(self, node, results):
  27.         syms = self.syms
  28.         obj = results["obj"].clone()
  29.         if obj.type == syms.arglist:
  30.             newarglist = obj.clone()
  31.         else:
  32.             newarglist = pytree.Node(syms.arglist, [obj.clone()])
  33.         after = results["after"]
  34.         if after:
  35.             after = [n.clone() for n in after]
  36.         new = pytree.Node(syms.power,
  37.                           Attr(Name("sys"), Name("intern")) +
  38.                           [pytree.Node(syms.trailer,
  39.                                        [results["lpar"].clone(),
  40.                                         newarglist,
  41.                                         results["rpar"].clone()])] + after)
  42.         new.set_prefix(node.get_prefix())
  43.         touch_import(None, 'sys', node)
  44.         return new
  45.